"""
异常：就是程序运行的过程中出现了错误

捕获异常：
    基本语法(捕获所有异常)：
        try:
            可能发生错误的代码
        except：
            如果出现异常执行的代码
    捕获指定的异常：
        try:
            可能发生错误的代码
        except 指定的异常类型 as 别名：
            如果出现异常执行的代码
    捕获多个异常：将异常类型以元组的形式放在except后面
        try:
            可能发生错误的代码
        except (异常类型1, 异常类型2, ...) as e：
            如果出现异常执行的代码
    捕获所有异常：
        try:
            可能发生错误的代码
        except Exception as e：
            如果出现异常执行的代码
    捕获异常，如果没有异常else：
        try:
            可能发生错误的代码
        except Exception as e：
            如果出现异常执行的代码
        else:
            如果没有异常执行的代码
    捕获异常，无论如何都要执行finally：
        try:
            可能发生错误的代码
        except Exception as e：
            如果出现异常执行的代码
        else:
            如果没有异常执行的代码
        finally:
            无论有没有异常，都会执行的代码
"""
# 通过open，读取一个不存在的文件
f = open("q1.txt", "r", encoding="UTF-8")
"""
Traceback (most recent call last):
  File "F:\Python\Project\pythonStart\06-异常、模块与包\1.异常.py", line 2, in <module>
    f = open("q1.txt","r",encoding="UTF-8")
FileNotFoundError: [Errno 2] No such file or directory: 'q1.txt'
"""

# 捕获异常
try:
    f = open("q1.txt", "r", encoding="UTF-8")
except:
    print("出现异常了，文件不存在，将open的模式改为w模式去打开")
    f = open("q1.txt", "w", encoding="UTF-8")


# 捕获指定的异常
try:
    print(name)
    # 1 / 0
except NameError as e:
    print("出现变量未定义的异常")
    print(e)

# 捕获多个异常
try:
    print(name)
    1 / 0
except (NameError, ZeroDivisionError) as e:
    print("出现变量未定义的异常 或者 除以0的异常错误")
    print(e)

# 捕获所有异常
try:
    print(name)
    1 / 0
except Exception as e:
    print("出现变量未定义的异常 或者 除以0的异常错误")
    print(e)

# 如果没有异常，执行else
try:
    print("hello")
except Exception as e:
    print("出现异常了")
    print(e)
else:
    print("没有异常")

# 捕获异常，无论如何都要执行finally
try:
    f = open("q1.txt", "r", encoding="UTF-8")
except:
    print("出现异常了，文件不存在，将open的模式改为w模式去打开")
    f = open("q1.txt", "w", encoding="UTF-8")
else:
    print("没有异常")
finally:
    f.close()




